Skip to content

disable external entity resolution in XML parsers#284

Open
digi-scrypt wants to merge 1 commit into
apache:masterfrom
digi-scrypt:xxe-disable-external-entities
Open

disable external entity resolution in XML parsers#284
digi-scrypt wants to merge 1 commit into
apache:masterfrom
digi-scrypt:xxe-disable-external-entities

Conversation

@digi-scrypt

Copy link
Copy Markdown

DOMParser, JDOMParser and the deprecated XMLDocumentContainer transform path parse XML from a caller-supplied URL/Source without turning off external entities, so a document carrying an external general entity like gets resolved at parse time and its contents land in the tree, which is the usual file-read / SSRF XXE. The fix turns off external general/parameter entities and external DTD loading inside each parser while leaving the internal DTD subset working, so the existing Vendor.xml style documents still parse. One thing I went back and forth on: for JDOM the SAX feature flags alone are not enough because setExpandEntities(true) re-enables external general entities afterward, so I refuse external lookups with a no-op EntityResolver there instead.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant